Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Програмування системного таймера 8253/8254.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Системи автоматизованого проектуваня

Інформація про роботу

Рік:
2009
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп'ютерів
Група:
КН

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра САПР  Звіт Про виконання Лабораторної роботи №10 Тема: Програмування системного таймера 8253/8254 Виконала: студентка групи КН-3 Львів – 2009 Тема: Програмування системного таймера 8253/8254. Мета: Навчитися програмувати системний таймер 8253/8254. Завдання Запрограмувати таймер на виконання мелодії Ricky Martin “Living La Vida Loca” за вказаним кодом: Cis3(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/16), P(1/16), A2(1/8), H2(1/8), D3(1/16), P(1/8), P(1/16), D3(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/4), P(1/8), Cis3(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/16), P(1/16), A2(1/8), Gis2(1/8), H2(1/8), P(1/8), A2(1/4), P(1/4), P(1/8), Cis3(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/8), A2(1/8), H2(1/8), D3(1/16), P(1/8), P(1/16), D3(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/4), P(1/8), Cis(1/16), P(1/8), P(1/16), Cis3(1/4), P(1/8). Короткі теоретичні відомості 061H ■PC/XT■ PPI (програмований периферійний інтерфейс), порт B. ╓7┬6┬5┬4┬3┬2┬1┬0╖ біт ║_│_│_│_│_│0│_│_║ ║ ╚═► 0: Таймер 2 вхід (спікер) ═╦═► OR 03H=спікер ON ╚═══► 1: Таймер 2 данні ═════╝ AND 0fcH=спікер OFF Для занесення частоти звучання динаміка використовую канал 2 системного таймера з адресою 42h Структура регістра керуючого слова системного таймера: 7 6 5 4 3 2 1 0 Біти: 0 – встановлення типу рахунку таймера (0 – двійковий, 1 – десятковий) 1,2,3 – встановлення режиму роботи вибраного каналу таймера (від 0 до 5-ти) 4,5 – код команди читання/запису регістра лічильника (01 – старший байт, 10 – молодший, 11 – спочатку молодшого, а потім старшого) 6,7 – вибір каналу таймера (0 – 2 канали, 11 – код читання стану каналу) Код програми .8086 code segment org 100h assume cs:code,ds:code,es:code,ss:code start: mov ax,1 ;встановлення значення початкової ноти push ax xor ax,ax ;обнулення ax xor al,00000011b ; встановлення байта дозволу динаміка out portb,al ; записуєм байт у відповідний порт mov si,0 ; обнулюю si mov al,10110110b ; запис значення керуючого регістра out reg,al ; його завантаження next: pop bx ;в стеку - порядковий номер ноти mov al,bl ; в al - номер ноти inc bx ; збільшення номера і запис в стек push bx cmp al,54 ;53 ноти, якщо 54-та - вихід je no_more cbw ; розширення вмісту al до ax lea bx,freq ; адреса з частотами нот dec ax ;зменшення пор. номера ноти на 1 shl ax,1 ; множення на 2 (бо працюэмо зі словами) mov di,ax ; зміщення відносно початку адреси нот до поточної в di mov dx,[bx][di] ; читаємо в dx частоту ноти mov al,dl ;записуэмо молодший байт частоти звучання out chan2,al mov al,dh ;старший байт out chan2,al mov ah,0 ; 0-ва ф-ція - отримати значення системного таймера int 1ah lea bx,beat ; завантаження адреси довжин звучання зквуку mov cl,[bx][si] ; довжина поточної ноти в cx mov ch,0 mov bx,dx add bx,cx ; відлік від поточного часу st_sou: int 1ah ; знову отримуєм значення системного таймеру cmp dx,bx ; порівнюєм з потрібним jne st_sou ; не рівні - продовжуєм звучання inc si ; додаємо номер довжини ноти jmp next ; перехід на звучання наступної ноти no_more: in al,portb ; дістаємо байт стану динаміка and al,11111100b ; обнулення бітів активації динаміка out 61h,al pop bx ; вирівнювання стеку mov ah,4ch ; вихід з програми int 21h beat db 1,2,1,4,1,1,2,2,1,2,1,1,2,1,4,4,2,1,2,1,4,1,1,2,2,2,2,2,2,4,4,2,1,2,1,4,2,2,2,1,2,1,1,2,1,4,4,2,1,2,1,4,2 freq dw 0432h,0,0,0432h,0,0,0a97h,096fh,03f7h,0,0,03f7h,0,0,0432h,0,0,0432h,0,0,0432h,0,0,0a97h,059ch,096fh,0,096fh,0,0a97h,0,0,0432h,0,0,0432h,0,0a97h,096fh,03f7h,0,0,03f7h,0,0,0432h,0,0,10d0h,0,0,0432h,0 portb equ 61h chan2 equ 42h reg equ 43h code ends end start lst – код Turbo Assembler Version 4.1 01/19/09 14:13:28 Page 1 l10.asm 1 .8086 2 00...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини